Sophisticated computing systems often rely on some or many different computing resources in order to perform a large number of processes. These systems may include various dependencies, which require use of at least a portion of the computing resources when performing certain tasks. For example, in a retail system, a primary computing resource may rely on other computing resources such as inventory resources, delivery resources, ordering resources, and/or other computing resources when conducting a transaction for an item.
As demand on a computing system grows over time, administrators typically perform a manual process to determine which computing resources are in need of expansion, replacement, or reallocation. Often, these decisions are performed without knowledge of all processes or perspective processes performed by the computing resources and without a complete understanding of all dependencies included across the computing system. For example, an administrator may add capacity to a first computing resource only to later find that throughput is limited due to a capacity constraint caused by a second computing resource.
Sometimes special events may trigger a spike or surge in a demand for the computing resources, such as after a highly anticipated item is offered for sale and many customers attempt to order the item. In these instances, the computing resources may experience high levels of utilization, which may lead to failure when the resources are overloaded with requests.